<?php

class PagosController extends Zend_Controller_Action
{

    public function init()
    {
       $this->initView();
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function indexAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
//            $table=new Application_Model_DbTable_Cliente();
//            $this->view->datos = $table->Listar();
            $table= new Application_Model_DbTable_Pagos();
            $this->view->datos = $table->Listar();
            
        }
    }

    
    
    public function agregarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
//titulo para la pagina
        $this->view->title = "Agregar Pago";
        //valor para <head><title>
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $idDeuda = (int) $this->_getParam('id', 0);
        $form = new Application_Form_Pagos;
        $form->setIdDeuda($idDeuda);
        $form->inicializarForm();
        //cambio el texto del boton submit
        $form->submit->setLabel('Guardar No vale');
        //$form->reset->setLabel('Limpiar');
        //lo asigno oa la accion (la pag web que se mostrara)
        $this->view->form = $form;

         $table = new Application_Model_DbTable_TipoPago();
         $this->view->TipoPago= $table->Listar();
         
         $tableDeuda = new Application_Model_DbTable_Deudas();
      $this->view->Deuda=  $tableDeuda->ListarPorCliente($this->_getParam('id', 0));
        
        if ($this->getRequest()->isPost())
        {
            //extrae un arreglo con los datos recibidos por POST
            //es decir, los datos clave=>valor del formulario
            $formData = $this->getRequest()->getPost();

            //isValid() revisa todos los validadores y filtros que le
            //aplicamos a los objetos del formulario: se asegura de que los
            //campos requeridos se hallan llenado, que el formato de la fecha
            //sea el correcto, etc
            if ($form->isValid($formData))
            {
                //aca ya estamos seguros de que los datos son validos
                //ahora los extraemos como se ve abajo
                //$id = $form->getValue('id');
                $fecha = $form->getValue('fecha');
                $valor = $form->getValue('valor');

                //creo objeto deudas que controla la tabla Usuario de la base de datos
                $pagos = new Application_Model_DbTable_Pagos();
                //llamo a la funcion agregar, con los datos que recibi del form
                $pagos->agregar($id, $fecha, $valor);

                //indico que despues de haber agregado el album,
                //me redirija a la accion index de AlbumController, es decir,
                //a la pagina que me muestra el listado de albumes
                $this->_helper->redirector('index');
            }
            //si los datos del formulario no son validos, es decir, falta ingresar
            //algunos o el formato es incorrecto...
            else
        {
                 $id = (int) $this->_getParam('id', 0);
                 
                 if ($id > 0) {
                     $form->setIDCliente($id);
//                    //CREO FORM
//                    $clientes = new Application_Model_DbTable_Cliente ();
//                    //extraigo de la talba el album id= $id
//                    $cliente = $clientes->get($id);
                    //populate() toma los datos de $cliente y los coloca en el formualrio.
                    //PARA QUE ESTO FUNCIONE, EL NOMBRE DE LOS OBJETOS DEL FORM DEBE
                    //SER IGUAL AL NOMBRE DE LOS CAMPOS EN LA TABLA!!

                    $form->populate($formData);
                }
            
        }
        }
        }
    }
    
      public function eliminarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        $id = $this->_getParam('id', 0);
        
        $tabla = new Application_Model_DbTable_Pagos ();
        //llamo a la funcion borrar
        $tabla->borrar($id);
        //redirijo a la accion index de este controlador, es decir,
        //al listado de clientes
        $this->_helper->redirector('index');
        }
    }

    public function modificarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        //titulo de la pagina
        $this->view->title = "Modificar Pagos";
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $form = new Application_Form_Pagos ();
        //le pongo otro texto al boton submit
        $form->submit->setLabel('Guardar');
        $this->view->form = $form;
       
        
        //si el usuario envia datos del form
        if ($this->getRequest()->isPost())
        {
            $formData = $this->getRequest()->getPost();
            //veo si son validos
            if ($form->isValid($formData))
            {
                //extraigo sus datos
                $id = $form->getValue('id');
                $fecha = $form->getValue('fecha');
                $valor = $form->getValue('valor');
               
                //creo objeto tabla Album()
                $pago = new Application_Model_DbTable_Pagos ();
                //LLAMO A FUNCION CAMBIAR, QUE HACE EL UPDATE
                $pago->cambiar($id, $fecha, $valor);
                //redirijo a accion index
                $this->_helper->redirector('index');
            } 
            //si los datos no son validos, vuelvo a mostrar el form, con 
            //los mensajes de error
            else
            {
                $form->populate($formData);
            }
        }
        //SI LOS DATOS NO VIENEN POR POST, ENTONCES ESTAMOS LLAMANDO A ESTA FUNCION
        //PARA QUE MUESTRE LOS DATOS DE UN CLIENTE
        else
        {
            //YO HE DECIDIDO QUE DEBE VENIR UN PARAMETRO LLAMADO ID, con el 
            //id del cliente que deseo editar
            //si viene un parametro llamado id le asigno su valor a $id; 
            //si no viene, le asigno cero
            //esto es como llamar a $_REQUEST
            //
            //$id = (int)$this->_request->getParam('Id', 0);
            $id = (int)$this->_getParam('id', 0);
            $this->view->saludo = "ID = ". $id;
            //si viene algun id
            if ($id > 0)
            {
               //CREO FORM
                $pago = new Application_Model_DbTable_Pagos ();
                //extraigo de la talba el album id= $id
                $pago= $pago->get($id);
                //populate() toma los datos de $cliente y los coloca en el formualrio.
                //PARA QUE ESTO FUNCIONE, EL NOMBRE DE LOS OBJETOS DEL FORM DEBE
                //SER IGUAL AL NOMBRE DE LOS CAMPOS EN LA TABLA!!
                
                $form->populate($pago);
            }
        }
    }
    }
    
      public function saveDataAjaxxAction()
    {   
        //esta accion no usara layout.phtml
        $this->_helper->layout->disableLayout();
        //esta accion no renderizara su contenido en saludoajax2.phtml
        $this->_helper->viewRenderer->setNoRender();

        //esta es la respuesta a la llamada ajax 
        $request = $this->getRequest()->getParams();
        $info = $request['cabecera'];
//        print_r($info[0]['id']);
        $pagos = new Application_Model_DbTable_Pagos();
        $fecha = time();
        //llamo a la funcion agregar, con los datos que recibi del form
     $idPago= $pagos->agregar($info['fecha'], $info['total'],  date("Y-m-d H:i:s",$fecha));
        
        $json_a=json_decode($request['cabecera']);
    
//    $asd = new Application_Model_DbTable_Bicha();
//    $asd->agregar("asdds", "sadsda");
//    
        $banc = new Application_Model_DbTable_Banco();
    $detallePago = new Application_Model_DbTable_DetallePago();
//$tabb= new Application_Model_DbTable_informacionBacaria();
//$tabb->agregar('ff', 'dds');
//$banc->agregar(4, "sddd", "ddd", "aaaa");
    $idDeuda=0;
    $idDetallePago=0;
    foreach ($request['Detalle'] as $key => $value){
    $idDetallePago=$detallePago->agregar($idPago, $value['deuda'], $value['tipoPago'], $value['valor']);
    $idDeuda=$value['deuda'];
    
//   
     if ($value['banco'] != "")
        {
        $banc->agregar($idDetallePago, $value['banco'], $value['tarjetaCheque'], $value['referencia']);
        }

}

    $deuda = new Application_Model_DbTable_Deudas();
    $deuda->cambiarDeuda($idDeuda, $info['total']);

//         $this->_helper->redirector('index');
        echo 'Se guardo la informacion correctamente';
    }

}

